package com.ztgf.order.models.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ztgf.common.annotations.CustomerBigDecimalSerialize;
import com.ztgf.order.models.dto.OrderPayRelationDTO;
import com.ztgf.order.models.dto.OrderRightsProtectionDTO;
import com.ztgf.order.models.dto.OrderShipDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * author: chenyu.wang
 * date: 2020-06-29 09:35
 * Description: 订单详情VO
 */
@Data
public class OrderDetailsVO implements Serializable {

    @ApiModelProperty(value = "订单表id")
    private Long id;
    @ApiModelProperty(value = "订单创建时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @ApiModelProperty(value = "到期时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expireDate;
    @ApiModelProperty(value = "订单编号")
    private String orderNo;
    @ApiModelProperty(value = "支付方式：0全款、1分批")
    private Integer payType;
    @ApiModelProperty(value = "配送方式：保留字段")
    private Integer deliveryType;
    @ApiModelProperty(value = "卖家店铺id")
    private Long sellShopId;
    @ApiModelProperty(value = "买家店铺id")
    private Long buyShopId;
    @ApiModelProperty(value = "类型 0普通、1询价")
    private Integer type;
    @ApiModelProperty(value = "下单类型 0普通 1代客下单")
    private Integer placeOrderType;
    @ApiModelProperty(value = "卖家名称")
    private String sellerName;
    @ApiModelProperty(value = "买家名称")
    private String buyerName;
    @ApiModelProperty(value = "订单状态 0待确定、1待签合同、2待付款、3待发货、4待签收、5已签收、6买家取消、7卖家已取消,20，异常订单（倒计时归0）")
    private Integer orderState;
    @ApiModelProperty(value = "合同状态 0未签订、1买家签订、2卖家签订、3已签订")
    private Integer contactState;
    @ApiModelProperty(value = "发票状态 0未开票、1申请中、2已开票")
    private Integer invoiceState;
    @ApiModelProperty(value = "评价状态 0未评价、1已评价")
    private Integer evaluationState;
    @ApiModelProperty(value = "卖家删除状态 0未删除、1已删除")
    private Integer sellerDeleteState;
    @ApiModelProperty(value = "买家删除状态 0未删除、1已删除")
    private Integer buyersDeleteState;
    @ApiModelProperty(value = "货物生产状态 0未生成、1生产中、2生产完成")
    private Integer goodsProductionState;
    @ApiModelProperty(value = "卖家维权状态 0未维权、1申请中、2同意、3不同意")
    private Integer sellerActivistState;
    @ApiModelProperty(value = "买家维权状态 0未维权、1申请中、2同意、3不同意")
    private Integer buyersActivistState;
    @ApiModelProperty(value = "是否过期 0未过期 1过期")
    private Integer isExpiration;
    @ApiModelProperty(value = "发货方式 0全部发货，1部分发货")
    private Integer shipWay;
    @ApiModelProperty(value = "收货人")
    private String userName;
    @ApiModelProperty(value = "收货人联系方式")
    private String userMobile;
    @ApiModelProperty(value = "收货人地址")
    private String userAddress;
    @ApiModelProperty(value = "收货人区域id")
    private Long areaId;
    @ApiModelProperty(value = "商品件数")
    private Integer totalNum;
    @ApiModelProperty(value = "商品总价")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal totalMoney;
    @ApiModelProperty(value = "店铺优惠")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal discountMoney;
    @ApiModelProperty(value = "应付总额")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal actualMoney;
    @ApiModelProperty(value = "运费")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal freightMoney;
    @ApiModelProperty(value = "催促发货 0未催促 1催促")
    private Integer urgeDeliverGoods;
    @ApiModelProperty(value = "催促签订 0未催促 1催促")
    private Integer urgeSign;
    @ApiModelProperty(value = "订单备注")
    private String orderNote;
    @ApiModelProperty(value = "订单佣金")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal lastCommissionMoney;
    @ApiModelProperty(value = "预计佣金")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal commissionMoney;
    @ApiModelProperty(value = "订单商品")
    private List<OrderInfoGoodsVO> orderItem;
    @ApiModelProperty(value = "订单支付明细")
    private List<OrderInfoPayVO> payDetails;
    @ApiModelProperty(value = "订单发票")
    private OrderDetailsInvoiceVO orderInvoice;
    @ApiModelProperty(value = "订单发货信息")
    private List<OrderShipDetailsVO> orderShip;
    @ApiModelProperty(value = "卖家店铺类型 0 担保交易 1先款交易")
    private Integer sellPayType;
    @ApiModelProperty(value = "详情头部时间信息")
    private OrderDetailsHeaderVO headers;
    @ApiModelProperty(value = "订单发票信息")
    private OrderInvoiceDetailsVO orderInvoiceInformation;
    @ApiModelProperty(value = "询盘商品总服务费")
    private BigDecimal purchaseFeeMoneyScalePrice;


    @ApiModelProperty(value = "订单发货信息列表")
    private List<OrderShipDTO> shipList;
    @ApiModelProperty(value = "支付类型对象")
    private List<OrderPaymentTypeVO> paymentTypeVOList;
    @ApiModelProperty(value = "赊销比例")
    private List<OrderPaymentScaleVO> paymentScale;
    @ApiModelProperty(value = "票据支付状态:0未支付、1支付中")
    private Integer billPayStatus;
    @ApiModelProperty(value = "票据名称")
    private String billName;
    @ApiModelProperty(value = "票据图片")
    private String billUrl;
    @ApiModelProperty(value = "支付列表")
    List<OrderPayRelationDTO> relationDTOList;

    @ApiModelProperty(value = "退款支付金额")
    private BigDecimal refundPayMoney;
    @ApiModelProperty(value = "维权列表")
    List<OrderRightsProtectionDTO> orderRightsProtectionDTOList;

}
